#ifndef __NODE_H__
#define __NODE_H__

#include <string>

// Definition of types.
enum Type { TVAR, TCHAR, TRANGE, TBRSEQ, TCHOICE, TNCHOICE, TUNION, TATOM, TASTERISK, TPLUS, TQUESTIONMARK, TSEQUENCE,
TFILEPATH, TXMLPATH, TENTRY, TENTRIES, TRULE, TSRULE, TNRULE, TACTION , TSLASH, TLEFT_BRACKET, TRIGHT_BRACKET};

typedef struct Node {
	Type type;
	char c;
	int length;
	Node **children;
} Node;

Node *makeCharNode(char c);
Node *makeRangeNode(char s, char e);
void printNode(Node *node);
extern void parse(char* input_filename, char* output_filename);

#endif
